
[2020] 정보 처리 기사 실기 1-프로그래밍 언어 활용(2)
2020-07-11 22:21 시에 저장한 글입니다.
정보처리기사 공부 후 정리 자료입니다. 정확하지 않을 수 있으니 꼭 책을 참고해서 공부하세요
2020 정보 처리 기사 프로그래밍 언어 활용 요약 입니다. 정처기 공부를 할 때 활용하세요.
1. for문
- 초기값, 최종값, 증가값을 지정하는 수식을 이용해 정해진 횟수를 반복하는 제어문
- 초기값을 정한 다음 최종값에 대한 조건이 참이면 실행할 문장을 실행한 후 초기값을 증가값 만큼 증가시키면서 최종값 에 대한 조건이 참인 동안 실행할 문장을 반복 수행
#include <stdio.h>
int main() {
int i, j;
for (i = 2; i <= 4; i++) {
for (j = 5; j <= 7; j++) {
}
}
printf("%d × %d = %d", j, i, i * j);
return 0;
}
// 8 x 5 = 402. while문
-
while: 조건이 참인 동안 실행할 문장을 반복 수행하는 제어문- while 문은 조건이 참인동안 실행할 문장을 반복 수행하다가 조건이 거짓이면 while문을 끝낸 후 다음 코드를 실행
- while 문은 조건이 처음부터 거짓이면 한 번도 수행하지 않음
-
do / while: 실행할 문장을 무조건 한 번 실행한 다음 조건을 판단하여 탈출 여부를 결정- do/while 문은 실행할 문장을 우선 실행한 후 조건을 판별하여 조건이 참이면 실행할 문장을 계속 반복 수행, 거짓이면 do/while 문을 끝낸 후 다음 코드를 실행
-
break / continue- switch문이나 반복문의 실행을 제어하기 위해 사용되는 예약어
- break : switch문이나 반복문 안에서 break가 나오면 블록을 벗어남
- continue : continue 이후의 문장을 실행하지 않고 제어를 반복문의 처음으로 옮김
#include <stdio.h>
int main() {
int x = 100, y = 10;
do {
x -= y;
printf("%d, %d\n", x, y++);
}
while (x > 30);
return 0;
}
// 25, 153. 배열과 문자열
-
배열: 동일한 데이터 유형을 여러 개 사용해야 할 경우 이를 손쉽게 처리하기 위해 여러 개의 변수들을 조합해서 하나의 이름으로 정의해 사용하는 것- 배열은 변수명 뒤에 대괄호 [ ]를 붙이고 그 안에 사용할 개수를 지정
- C언어에서 배열의 위치는 0부터 시작
- C언어에서 배열 위치를 나타내는 첨자 없이 배열 이름을 사용하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같음
- 1차원 배열 : 변수들을 일직선상의 개념으로 조합한 배열(
int a[5]) - 2차원 배열 : 변수들을 평면, 즉 행과 열로 조합한 배열(
int b[3][3]) -
배열 형태의 문자열 변수
- C언어에서는 큰따옴표(” “)로 묶인 글자는 글자 수에 관계없이 문자열로 처리
- C언어에는 문자열을 저장하는 자료형이 없기 때문에 배열 또는 포인터를 이용하여 처리
- char a[5] = “hello”
- 배열에 문자열을 저장할 때는 배열 선언 시 초기값으로 지정해야 하며, 이미 선언된 배열에는 문자열을 저장할 수 없음
- 문자열 끝에 자동으로 널 문자(“\0”)가 삽입되므로, 널 문자까지 고려하여 배열 크기를 지정해야 함
#include <stdio.h>
int main() {
int exint[] = { 4,9,3,7,6,4,24,4,8,4,10 };
int len = sizeof(exint) / sizeof(int);
int value = 0;
for (int i = 0; i < len; i++) {
if (exint[i] == 4) {
value++;
}
}
printf("%d", value);
return 0;
}
// 44. Java에서의 배열과 문자열
- Java에서는 향상된 for문을 사용할 수 있는데, 향상된 for문은 객체를 대상으로만 가능
public class Example {
public static void main(String[ ] args) {
int[ ] a = {90,100,80,70,60,50,30};
int hap = 0;
float avg;
for (int i : a){
hap = hap + i;
}
avg = (float)hap / a.length;
System.out.printf("%d, %.2f", hap, avg);
}
}
// 480, 68.57public class Example {
public static void main(String[ ] args){
String str = "Information!";
int n = str.length( );
char[ ] st = new char [n];
n--;
for (int k = n; k >= 0; k--) {
st[n-k] = str.charAt(k);
}
for (char k : st) {
System.out.printf("%c", k);
}
}
}
// !noitamrofiI- 1회 기사 실기
public class Test {
static int[] arr() {
int a[] = new int[4];
int b = a.length;
for(int i = 0; i < b; i++){
a[i] = i;
}
return a;
}
public static void main(String[ ] args) {
int a[] = arr();
for(int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
}
}
}
// 0 1 2 35. 포인터
-
포인터와 포인터 변수
- 포인터는 변수의 주소를 말하며, C언어에서는 주소를 제어할 수 있는 기능을 제공
- 포인터 변수 : C언어에서 변수의 주소를 저장할 때 사용하는 변수
- 포인터 변수를 선언할 때는 자료의 형을 먼저 쓰고 변수명 앞에 간접 연산자 *를 붙임(int *a;).
- 연산자 & : 포인터 변수에 주소를 저장하기 위해 변수의 주소를 알아낼 때(a = &b;)
- 연산자 * : 해당 포인터 변수가 가리키는 곳의 값(c = *a;)
-
포인터와 배열
- 배열을 포인터 변수에 저장한 후 포인터를 이용해 배열의 요소에 접근할 수 있음
- 배열 위치를 나타내는 첨자를 생략하고 배열의 대표명만 지정하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같음
int a[5], *b;
// b = a → 배열의 대표명을 적었으므로 a 배열의 시작 주소인 a[0]의 주소를 b에 저장
// b = &a[0] → a 배열의 첫 번째 요소인 a[0]의 주소(&)를 b에 저장#include <stdio.h>
int main( )
{
int a = 50;
int *b;
b = &a;
*b = *b+20;
printf("%d, %d", a, *b);
}
// 70, 70#include <stdio.h>
main() {
int a[5], b = 1, sum = 0;
for (int i = 4; i > -1; i--) {
a[i] = b;
b *= 3;
}
// int a[5] = {81,27,9,3,1}
for (int i = 4; i > -1; i -= 2){
sum += *(a + i);
}
printf("%d", sum);
}
// 916. 사용자 정의 함수
- 사용자가 필요한 기능을 취향대로 만들어 사용할 수 있는 함수
- 실기 기출
#include <stdio.h>
void align(int a[]) {
int temp;
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4 - i; j++){
if (a[j] > a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main() {
int a[] = { 85, 75, 50, 100, 95 };
align(a);
for (int i = 0; i < 5; i++){
printf("%d ", a[i]);
}
return 0;
}
// 50 75 85 95 1007. 재귀 함수
- 자기가 자기를 호출하는 순환 프로그램
- 팩토리얼(Factorial)
#include <stdio.h>
factorial(int n) {
if ( n <= 1 )
return 1;
else
return n * factorial(n-1);
}
int main( )
{
printf("%d", factorial(5));
return 0;
}
// 120- 기능사 기출
#include <stdio.h>
hrd(num) {
if (num <= 0)
return;
printf(“%d ”, num);
hrd(num-1);
}
int main( ) {
hrd(5);
return 0;
}
// 5 4 3 2 18. Java의 클래스와 메소드
- 클래스는 객체 생성을 위한 필드(속성)와 메소드(함수)를 정의하는 설계도로, Java는 아무리 작은 프로그램이라도 클래스를 만들어서 사용해야 함
- 두 수 교환
public class Example {
static class AAclass {
int i;
int j;
}
public static void main(String[ ] args) {
AAclass myVal = new AAclass( );
myVal.i = 10;
myVal.j = 20;
myVal = change(myVal);
System.out.printf("i=%d, j=%d\n", myVal.i, myVal.j);
}
static AAclass change(AAclass myVal) {
int temp;
temp = myVal.i;
myVal.i = myVal.j;
myVal.j = temp;
return myVal;
}
}- 예제 1
public class Test {
static int power(int data, int exp) {
int i, result = 1;
for(i = 0; i < exp; i++){
result = result * data;
}
return result;
}
public static void main(String args[]) {
System.out.print(power(2, 10));
}
}
// 1024(2의 10승)9. Python의 기초
input: Python의 표준 입력 함수로, 키보드로 입력받아 변수에 저장하는 함수. 입력되는 값은 문자열로 취급되어 저장print: Python의 표준 출력 함수로, 값을 화면에 출력하는 함수리스트(List): Python에서는 배열 대신 리스트를 사용range: 연속된 숫자를 생성하는 것으로, 리스트, 반복문 등에서 많이 사용슬라이스(Slice): 문자열이나 리스트와 같은 순차형 객체에서 일부를 잘라(slicing) 반환하는 기능
# 입력
# abcde // fghij
# 13
x = input().split('//')
y = int(input())
val = list(range(0, y, 3))
# [0, 3, 6, 9, 12 ]
val.remove(6)
print(x[1].find('i') + val[2])
# 1210. 라이브러리
- 라이브러리 : 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 모아 놓은 집합체
- 표준 라이브러리 : 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리로, 여러 종류의 모듈이나 패키지 형태
- 외부 라이브러리 : 개발자들이 필요한 기능들을 만들어 인터넷 등에 공유해 놓은 것으로, 외부 라이브러리를 다운받아 설치한 후 사용
- c의 라이브러리
| 헤더 파일 | 기능 |
|---|---|
| stdio.h | 데이터의 입·출력에 사용되는 기능들을 제공(printf, scanf, fprintf, fscanf, fclose, fopen)등 |
| math.h | 수학 함수들을 제공(sqrt, pow, abs)등 |
| string.h | 문자열 처리에 사용되는 기능들을 제공(strlen, strcpy, strcmp)등 |
| stdlib.h | 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능들을 제공(atoi, atof, srand, rand, malloc, free) |
| time.h | 시간 처리에 사용되는 기능들을 제공(time, clock) |
- java 라이브러리
| 패키지 | 기능 |
|---|---|
| java.lang | Java에 기본적으로 필요한 인터페이스, 자료형, 예외 처리 등에 관련된 기능을 제공(import문x)(String, System, Process, Runtime, Math, Error) |
| java.util | 날짜 처리, 난수 발생, 복잡한 문자열 처리 등에 관련된 기능을 제공 (Date, Calender, Random, StringTokenizer) |
| java.io | 파일 입·출력과 관련된 기능 및 프로토콜을 제공 (InputStream, OutputStream, Reader, Writer) |
| java.net | 네트워크와 관련된 기능을 제공(Socket, URL, InetAddress) |
| java.awt | 사용자 인터페이스(UI)와 관련된 기능(rame, Panel, Dialog, Button, Checkbox) |
